<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>数值扩展</title>
  </head>
  <body>
    <script>
      // 0.Number.EPSILON是 Javascript 表示的最小精度
      // EPSILON 属性的值接近于 2.2 的 -16次方，这是最小的精度。当两个数的差值小于Number.EPSILON时,认为这两个数相等
      console.log(0.1 + 0.2 === 0.3); // false
      function equal(a, b) {
        if (Math.abs(a - b) < Number.EPSILON) {
          return true;
        } else {
          return false;
        }
      }
      console.log(equal(0.1 + 0.2, 0.3)); // true

      // 1.二进制和八进制
      let b = 0b1010; // 二进制
      console.log(b); // 10
      let o = 0o777; // 八进制
      console.log(o); //  511
      let d = 100; // 十进制
      console.log(d); // 100
      let x = 0xff; // 十六进制
      console.log(x); // 255

      // 2.Number.isFinite() 检测一个数值是否为有限数
      console.log(Number.isFinite(100)); // true
      console.log(Number.isFinite(Infinity)); // false

      // 3.Number.isNaN 检测一个值是否为 NaN
      console.log(Number.isNaN(123)); //fasle
      console.log(isNaN(123)); // false
      console.log(isNaN("a")); // true

      // 4.Number.parseInt Number.parseFloat字符串转整数/浮点数
      console.log(Number.parseFloat("100.133ABC")); // 100.133
      console.log(Number.parseInt("12.94hello")); // 12
      console.log(parseInt("12")); // 12
      console.log(parseFloat("12.44")); // 12.44

      // 5.Number.isInteger 判断一个数是否为整数
      console.log(Number.isInteger(12)); // true
      console.log(Number.isInteger("12")); //false

      // 6.Math.trunc() 去除小数部分，返回整数部分
      console.log(Math.trunc(12.999)); // 12

      // 7. Math.sign 判断一个数到底是 正数 负数 还是零
      console.log(Math.sign(100)); // 1
      console.log(Math.sign(0)); // 0
      console.log(Math.sign(-10)); // -1
    </script>
  </body>
</html>
